#include<iostream>
#include<map>
#include<string>
#include<vector>
using namespace std;
int main() {
int n;
cin >> n;
map<string, vector<vector<char>>> f;
for(int i = 0; i < n; i++) {
string s; // function name
cin >> s; // read "void"
s.clear();
for (char c; cin.get(c);) {
if (c == ' ')
continue; // spaces is not a part of the name
else if (c == '(')
break;
else
s.push_back(c);
}
vector<char> a;
string t;
for (char c; cin.get(c);) {
if (c == ' ')
continue;
else if (c == ')') {
a.push_back(t[0]);
break;
}
else if (c == ',') {
a.push_back(t[0]);
t.clear();
}
else
t.push_back(c);
}
f[s].push_back(a);
}
int m;
cin >> m;
map<string, char> v;
for(int i = 0; i < m; i++) {
string t, s;
cin >> t >> s;
v[s] = t[0];
}
int k;
cin >> k;
for(int i = 0; i < k; i++) {
string s;
for (char c; cin.get(c);) {
if (c == ' ')
continue;
if(c == '\n')
continue; // line reading ends at ')' so line break become unread
else if (c == '(')
break;
else
s.push_back(c);
}
vector<char> a;
string t;
for (char c; cin.get(c);) {
if (c == ' ')
continue;
else if (c == ')') {
a.push_back(v[t]);
break;
}
else if (c == ',') {
a.push_back(v[t]);
t.clear();
}
else
t.push_back(c);
}
int c = 0; // number of suitable functions
for (auto t : f[s]) {
if (t.size() != a.size())
continue;
for (int j = 0; j < a.size(); j++) {
if (t[j] != 'T' && t[j] != a[j])
goto next;
}
c++;
next:;
}
cout << c << endl;
}
}/*1691106019.359995*/
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |
415. Add Strings | 22. Generate Parentheses |
13. Roman to Integer | 2. Add Two Numbers |
515. Find Largest Value in Each Tree Row | 345. Reverse Vowels of a String |
628. Maximum Product of Three Numbers | 1526A - Mean Inequality |
1526B - I Hate 1111 | 1881. Maximum Value after Insertion |
237. Delete Node in a Linked List | 27. Remove Element |
39. Combination Sum | 378. Kth Smallest Element in a Sorted Matrix |
162. Find Peak Element | 1529A - Eshag Loves Big Arrays |
19. Remove Nth Node From End of List | 925. Long Pressed Name |
1051. Height Checker | 695. Max Area of Island |